import {
	computed,
	onMounted,
	onUnmounted,
	reactive,
	ref,
	nextTick,
	toRaw,
	watch,
} from "vue";

import * as util from '@/amtf/utils'
import use单项集 from "@/hooks/单项集hook"
export default function(cfg = {}) {
	// const 单项模板 = { 名称: "芙蓉王", 价格: 25, 单位: "包", 数量: 1 }
	const 单项模板 = { 数量: 1 }

	const 单项组 = cfg.单项组
	// console.log('单项组: ', 单项组);
	// const 单项集 = reactive({})
	const { 单项集 } = use单项集({ 单项组, 初始对象: { 编辑: false } })

	// function 初始化() {
	// 	// 予单项集()
	// 	let res2 = util.组转对象(单项组, { 编辑: false });
	// 	util.对象重予(单项集, res2);
	// }
	// 初始化()

	// function 予单项集() {
	// 	for (let s of 单项组) {
	// 		if (s.id in 单项集) {
	// 			if (单项集[s.id].编辑) {
	// 				// 已经是编辑状态
	// 				break
	// 			}
	// 		} else {
	// 			单项集[s.id] = { 编辑: false };
	// 		}
	// 	}
	// }


	function 改(item) {
		单项集[item.id].编辑 = true
	}

	function 确定(item) {
		单项集[item.id].编辑 = false
	}

	function 删(item) {
		util.删除元素(单项组, item)
	}

	function 取编辑(item) {
		const res = 单项集[item.id].编辑
		return res
	}

	const setInputRef = (el, item) => {
		if (el) {
			单项集[item.id].inputref = el;
		}
	};

	async function 增(params) {
		const id = util.成id()
		const 单项 = util.深拷贝(单项模板)
		单项.id = id

		// const id = date.formatDate(timeStamp, 'YYYY-MM-DDTHH:mm:ss.SSS')
		单项集[id] = { 编辑: true };
		// cfg.单项组.unshift(单项)
		单项组.unshift(单项)
		// console.log('增 单项组: ', 单项组);

		await nextTick();
		// console.log(`单项集[id].inputref 👉`, 单项集[id].inputref)
		const inputref = 单项集[id].inputref;
		// console.log('inputref: ', inputref);
		if (inputref) {
			inputref.focusInput(); // 调用子组件暴露的方法
		}
	}

	// watch(单项组, () => {
	// 	console.log("明细 单项组 变化了");
	// 	// 予单项集()
	// }, { immediate: true })

	return {
		确定,
		取编辑,
		删,
		改,
		setInputRef,
		单项组,
		单项集,
		增
	};

}